package com.AdvancedDemos.正则表达式;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class 使用正则表达式查找内容 {
    public static void main(String[] args) {
        /**
         * 使用正则表达式查找一段文本中的内容
         *
         * 需求:请把下面文本中的电话,邮箱,座机号码,热线都爬取出来
         */
        String data = "来黑马程序员学习Java,\n" +
                "电话:18512516758,18512508907\n" +
                "或者联系邮箱:boniu@itcast.cn\n" +
                "座机电话:01036517985,010-98591256\n" +
                "邮箱:bozai@itcast.cn,\n" +
                "邮箱2:dlei0009@163.com,\n" +
                "热线电话:400-618-9090, 400-618-4000, 4006184000, 4006189090";
        //1.定义正则表达式字符串作为匹配要求
        String regex = "((1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19}))|(\\w{2,}@\\w{2,20}(\\.\\w{2,10})+)|(400-?\\d{3,7}-?\\d{3,7})";//(电话|座机)|(邮箱)|(热线电话)
        //2.把正则表达式字符串封装成Pattern模式对象  /*pattern n.模式,样式*/
        Pattern pattern = Pattern.compile(regex);
        //3.把数据放到模式对象的匹配器中,返回匹配器Matcher类型的匹配器对象
        Matcher matcher = pattern.matcher(data);
        //4.在循环中,用匹配器不断获取匹配到的信息
        while (matcher.find()) {//public boolean find() 找到返回true,否则false
            String group = matcher.group();//public String group() 返回值是每次找到的内容
            System.out.println(group);
            /**
             * 18512516758
             * 18512508907
             * boniu@itcast.cn
             * 01036517985
             * 010-98591256
             * bozai@itcast.cn
             * dlei0009@163.com
             * 400-618-9090
             * 400-618-4000
             * 4006184000
             * 4006189090
             */
        }
    }
}
